package jus.aoo.annuaire;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Annuaire {
	
	Map<Personne, Numeros> c;
	
	public Annuaire() {
		c = new HashMap<Personne, Numeros>();
		//c = new TreeMap<Personne, Numeros>();
	}
	
	public void addEntry(Personne p,String n){
		System.out.println("Entry 1");
		if(!c.containsKey(p)){
			c.put(p,new Numeros(n));
		}else{
			Numeros no = c.get(p);
			no.add(n);
			c.put(p, no);
		}
	}
	
	public void addEntry(Personne p,Numeros n){
		System.out.println("Entry 2");
		c.put(p,n);
	}
	
	public void loadEntryFromFile(String file){
		c.clear();
		Map m = Util.importFromFile(file);
		Personne op;
		Numeros oln;
		for (Object p : m.keySet()) {
		   if(p instanceof Personne){
			   op = (Personne) p;
			   oln = (Numeros) m.get(p);
			   c.put(op, oln);
		   }
		}
	}
	
	public String getNumber(Personne p){
		return c.get(p).getItem(0);
	}
	
	public String getNumbers(Personne p){
		return c.get(p).toString();
	}
	
	public Personne annuInverse(String num){
		for (Personne personne : c.keySet()){
			if(c.get(personne).has(num))return personne;
		}
		return null;
	}
	
	public void remove(Personne p){
		c.remove(p);
	}
	
	public void remove(Personne p,String num){
		if(c.get(p).has(num)){
			if(c.get(p).count()<1)c.remove(p);
			else c.get(p).remove(num);
		}
	}
	
	@Override
	public String toString() {
		System.out.println("toString");
		String strx = "";
		for (Personne personne : c.keySet()){
			strx+=personne.toString()+" || "+c.get(personne).toString()+"\r\n";
		}
		return strx;
	}
	
	public String toString(char cr) {
		Annuaire an = new Annuaire();
		System.out.println("toString char \n");
		String strx = "";
		for (Personne personne : c.keySet()){
			if(personne.getNom().toCharArray()[0]==cr){
				System.out.println("char '"+cr+"' trouvé \n");
				an.addEntry(personne,c.get(personne));
			}
		}
		return an.toString();
	}
		
}
